// 登录注册相关类型定义

/**
 * 登录表单数据接口
 */
export interface LoginForm {
  /** 用户名或者邮箱 */
  usernameOrEmail: string;
  /** 密码 */
  password: string;
  /** 是否记住我 */
  rememberMe: boolean;
}

/**
 * 登录表单验证错误接口
 */
export interface LoginErrors {
  /** 用户名错误信息 */
  usernameOrEmail: string;
  /** 密码错误信息 */
  password: string;
}

/**
 * 登录请求参数接口（匹配后端SigninUserDto）
 */
export interface SigninRequest {
  /** 用户名或者邮箱 */
  usernameOrEmail: string;
  /** 密码 */
  password: string;
}

/**
 * 登录响应数据接口（匹配后端返回格式）
 */
export interface SigninResponse {
  /** 访问令牌 */
  access_token: string;
}

/**
 * 用户信息接口
 */
export interface UserInfo {
  /** 用户ID */
  id: string;
  /** 用户名 */
  username: string;
  /** 邮箱 */
  email: string;
  /** 昵称 */
  nickname?: string;
  /** 头像URL */
  avatar?: string;
  /** 角色列表 */
  roles: string[];
  /** 权限列表 */
  permissions: string[];
  /** 创建时间 */
  createdAt: string;
  /** 更新时间 */
  updatedAt: string;
}

/**
 * 注册表单数据接口
 */
export interface RegisterForm {
  /** 用户名 */
  username: string;
  /** 邮箱 */
  email: string;
  /** 密码 */
  password: string;
  /** 确认密码 */
  confirmPassword: string;
}

/**
 * 注册表单验证错误接口
 */
export interface RegisterErrors {
  /** 用户名错误信息 */
  username: string;
  /** 邮箱错误信息 */
  email: string;
  /** 密码错误信息 */
  password: string;
  /** 确认密码错误信息 */
  confirmPassword: string;
}

/**
 * 注册请求参数接口（匹配后端SignupUserDto）
 */
export interface SignupRequest {
  /** 用户名 */
  username: string;
  /** 密码 */
  password: string;
  /** 邮箱 */
  email: string;
}

/**
 * 注册响应数据接口（匹配后端返回格式）
 */
export interface SignupResponse {
  /** 用户ID */
  id: string;
  /** 用户名 */
  username: string;
  /** 创建时间 */
  createdAt: string;
  /** 更新时间 */
  updatedAt: string;
  /** 用户资料 */
  profile: {
    /** 邮箱 */
    email: string;
  };
  /** 角色列表 */
  roles: any[];
}

/**
 * 密码重置请求接口
 */
export interface ResetPasswordRequest {
  /** 邮箱 */
  email: string;
}

/**
 * 修改密码请求接口
 */
export interface ChangePasswordRequest {
  /** 旧密码 */
  oldPassword: string;
  /** 新密码 */
  newPassword: string;
  /** 确认新密码 */
  confirmPassword: string;
}
